home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1987-09-07 | 8.1 KB | 234 lines |
- 10 ' B U N N Y . B A S
- 20 ' Modified 8/10/86 11:18 pm
- 30 '
- 40 ' BUNNY LETTERS will help a pre-schooler learn the alphabet, by
- 50 ' matching pictures with the letters they start with.
- 60 '
- 70 ' Converted for IBM-PC Screen 1.
- 80 '
- 90 ' Initialize all variables and arrays.
- 100 '
- 110 SCREEN 1 : COLOR 0,1 : CLS
- 120 LOCATE 7,2 : PRINT "Bunny"; : LOCATE 12,1 : PRINT "Letters";
- 130 LOCATE 24,1 : PRINT " copyright 1985, Computing Specialties";
- 140 '
- 150 '
- 160 ' Poke subroutine ALOAD into memory.
- 170 '
- 180 DEF SEG : ALOAD= 48000
- 190 FOR IB=0 TO 95 : READ BYTE : POKE ALOAD+IB,BYTE : NEXT IB
- 200 DATA &H55, &H8B, &HEC, &H8B, &H5E, &H0A, &H8A, &H0F, &HB5, &H00, &H8B, &H77
- 210 DATA &H01, &H8B, &H5E, &H08, &H8B, &H07, &H8E, &HC0, &HBF, &H00, &H00, &HA4
- 220 DATA &HE2, &HFD, &HB0, &H00, &HAA, &H1E, &H06, &H1F, &H07, &HB0, &H00, &HB4
- 230 DATA &H3D, &HBA, &H00, &H00, &HCD, &H21, &H72, &H24, &H8B, &HD8, &HB9, &H07
- 240 DATA &H00, &HBA, &H00, &H00, &HB4, &H3F, &HCD, &H21, &H3B, &HC1, &H74, &H05
- 250 DATA &HB8, &H0D, &H00, &H75, &H0F, &HBE, &H05, &H00, &H8B, &H0C, &HB4, &H3F
- 260 DATA &HBA, &H00, &H00, &HCD, &H21, &HB8, &H00, &H00, &H8B, &H7E, &H06, &H26
- 270 DATA &H89, &H05, &HB4, &H3E, &HCD, &H21, &H06, &H1F, &H5D, &HCA, &H06, &H00
- 280 '
- 290 ' Load the title picture onto the screen.
- 300 '
- 310 SEG2%=&HB800 : BERR%=0 : FILE$="BUNNY1.PIC" : CALL ALOAD(FILE$,SEG2%,BERR%)
- 320 UP$=CHR$(0)+CHR$(72) : DN$=CHR$(0)+CHR$(80)
- 330 LT$=CHR$(0)+CHR$(75) : RT$=CHR$(0)+CHR$(77)
- 340 DIM A(150),B(150),C(150),D(150),E(150),F(150),G(150),H(150),I(150),J(150)
- 350 DIM K(150),L(150),M(150),N(150),O(150),P(150),Q(150),R(150),S(150),T(150)
- 360 DIM U(150),V(150),W(150),X(150),Y(150),Z(150),BUNNY(150),RABBIT(150)
- 370 DIM XTL(28),YTL(28),XBR(28),YBR(28),LETTER(30),ALPHA(4)
- 380 DIM N$(40),T$(14)
- 390 M1$= "C4C4E4E4G4G4E2F4F4E4E4D8D8D8D8C2"
- 400 M2$= "C4C4E2G4G4E2F2E2D2C2"
- 410 M$=M1$+M2$
- 420 FOR I=1 TO 7
- 430 XTL(I)=23+I*32 : XBR(I)=58+I*32 : YTL(I)=10 : YBR(I)=39
- 440 XTL(I+7)=23+I*32 : XBR(I+7)=58+I*32 : YTL(I+7)=50 : YBR(I+7)=79
- 450 XTL(I+14)=23+I*32 : XBR(I+14)=58+I*32 : YTL(I+14)=90 : YBR(I+14)=119
- 460 XTL(I+21)=20+I*35 : XBR(I+21)=55+I*35 : YTL(I+21)=140 : YBR(I+21)=169
- 470 NEXT I
- 480 XTL(6)=218 : XBR(22)=89 : XBR(19)=217 : XTL(21)=250 : XBR(26)=232
- 490 RANDOMIZE TIMER
- 500 '
- 510 ' Sort the letters for a new game.
- 520 '
- 530 FOR I=1 TO 26 : LETTER(I)=I : NEXT I
- 540 FOR I=1 TO 50
- 550 J=INT(RND*26)+1 : K=INT(RND*26)+1
- 560 T=LETTER(J) : LETTER(J)=LETTER(K) : LETTER(K)=T
- 570 NEXT I
- 580 '
- 590 ' Load the pictures and store each one in an array.
- 600 '
- 610 FOR I=1 TO 7
- 620 ON I GOTO 630,680,730,780,830,880,920
- 630 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),A
- 640 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),H
- 650 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),O
- 660 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),V
- 670 GOTO 950
- 680 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),B
- 690 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),I
- 700 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),P
- 710 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),W
- 720 GOTO 950
- 730 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),C
- 740 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),J
- 750 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),Q
- 760 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),X
- 770 GOTO 950
- 780 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),D
- 790 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),K
- 800 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),R
- 810 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),Y
- 820 GOTO 950
- 830 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),E
- 840 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),L
- 850 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),S
- 860 GET (XTL(I+21),YTL(I+21))-(XBR(I+21),YBR(I+21)),Z
- 870 GOTO 950
- 880 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),F
- 890 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),M
- 900 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),T
- 910 GOTO 950
- 920 GET (XTL(I),YTL(I))-(XBR(I),YBR(I)),G
- 930 GET (XTL(I+7),YTL(I+7))-(XBR(I+7),YBR(I+7)),N
- 940 GET (XTL(I+14),YTL(I+14))-(XBR(I+14),YBR(I+14)),U
- 950 NEXT I
- 960 XB=240 : YB=145 : GET (XB,YB)-(XB+25,YB+15),BUNNY
- 970 GET (21,59)-(36,84),RABBIT
- 980 CLS
- 990 '
- 1000 ' Clear the screen for a set of five rounds.
- 1010 '
- 1020 LINE (0,0)-(319,199),2,B : LINE (0,35)-(319,35),2
- 1030 FOR N=1 TO 5
- 1040 '
- 1050 ' Select four letters and place them on the screen
- 1060 '
- 1070 FOR R=1 TO 4 : ALPHA(R)=LETTER((N-1)*4+R) : NEXT R
- 1080 FOR R=1 TO 10 : I=INT(RND*4)+1 : J=INT(RND*4)+1
- 1090 T=ALPHA(I) : ALPHA(I)=ALPHA(J) : ALPHA(J)=T
- 1100 NEXT R
- 1110 FOR J=1 TO 4
- 1120 K=LETTER((N-1)*4+J) : L=ALPHA(J)
- 1130 LOCATE J*5+3,30 : PRINT CHR$(ASC("A")+L-1);" ";CHR$(ASC("a")+L-1)
- 1140 X=55 : Y=J*40+1
- 1150 GOSUB 2060 ' PUT PICTURE AT (X,Y) FOR LETTER NUMBER K
- 1160 NEXT J
- 1170 LOCATE 1,1
- 1180 '
- 1190 ' Place the pictures in a different order on the left side.
- 1200 '
- 1210 FOR J=1 TO 4
- 1220 K=LETTER((N-1)*4+J)
- 1230 FOR I=1 TO 4
- 1240 IF ALPHA(I)=K THEN TB=I*40+10
- 1250 NEXT I
- 1260 XB=95 : YB=J*40+10 : PUT (XB,YB),BUNNY,XOR : XL(J)=XB-1 : YL(J)=YB+5 : XR(J)=XB-1 : YR(J)=YL(J)
- 1270 '
- 1280 ' Redraw all current lines on the screen and wait for a
- 1290 ' key press on the keyboard
- 1300 '
- 1310 FOR I=1 TO J-1 : LINE (XL(I),YL(I))-(XR(I),YR(I)),1 : NEXT I
- 1320 LINE(XL(J),YL(J))-(XR(J),YR(J)),2
- 1330 C$=INKEY$ : IF C$="" THEN 1330
- 1340 '
- 1350 ' A key was pressed, respond to it.
- 1360 '
- 1370 IF C$=CHR$(27) THEN RUN "MENU"
- 1380 IF C$=UP$ THEN YD=-10: GOTO 1470
- 1390 IF C$=DN$ THEN YD=+10: GOTO 1470
- 1400 IF C$=RT$ THEN XD=+10: GOTO 1470
- 1410 IF C$=LT$ THEN XD=-10: GOTO 1470
- 1420 IF C$="q" OR C$="Q" THEN RUN "MENU"
- 1430 GOTO 1330
- 1440 '
- 1450 ' Move the bunny in the direction indicated.
- 1460 '
- 1470 PUT (XB,YB),BUNNY,XOR : LINE(XL(J),YL(J))-(XR(J),YR(J)),0
- 1480 IF XB+XD>=95 AND XB+XD<=205 THEN XB=XB+XD : XR(J)=XR(J)+XD
- 1490 IF YB+YD>=50 AND YB+YD<=170 THEN YB=YB+YD : YR(J)=YR(J)+YD
- 1500 PUT (XB,YB),BUNNY,XOR : XD=0 : YD=0
- 1510 WHILE INKEY$<>"" : WEND
- 1520 IF XB<>205 OR YB<>TB THEN 1310
- 1530 '
- 1540 ' The bunny has reached the right letter,
- 1550 ' change the line to blue, and put the rabbit on the right side.
- 1560 '
- 1570 XR(J)=XR(J)+30
- 1580 PUT (XB,YB),BUNNY,XOR : PUT (XB+80,YB),BUNNY,PSET
- 1590 LINE (XL(J),YL(J))-(XR(J),YR(J)),1
- 1600 PLAY "O3C32E32G32O4C8"
- 1610 WHILE INKEY$<>"" : WEND
- 1620 NEXT J
- 1630 '
- 1640 ' All lines are connected, put a rabbit on the top of the screen.
- 1650 ' Then clear the screen for a new round.
- 1660 '
- 1670 FOR W=1 TO 500 : NEXT W : PLAY "O4C32E32G32O5C8"
- 1680 PUT ((N-1)*60+25,5),RABBIT,PSET
- 1690 FOR I=1 TO 2000 : NEXT I
- 1700 LINE (1,36)-(318,198),0,BF
- 1710 NEXT N
- 1720 '
- 1730 ' All rabbits are in the top row. End the game
- 1740 ' by playing the alphabet song.
- 1750 '
- 1760 DATA C4,C4,E4,E4,G4,G4,E2,F4,F4,E4,E4,D8,D8,D8,D8,C2
- 1770 DATA C4,C4,E2,G4,G4,E2,F8F8F4,E2,D4D4,C2
- 1780 DATA C4,NOW,C4,I'VE,E4,SAID,E4,MY,G4,A,G4,B,E2,C'S.
- 1790 DATA F4,WILL,F4,YOU,E4,COME,E4,AND,D4,PLAY,D4,WITH,C2,ME?
- 1800 IF N$(1)<>"" THEN GOTO 1830
- 1810 FOR K=1 TO 26 : READ N$(K) : NEXT K
- 1820 FOR K=27 TO 40 : READ N$(K),T$(K-26) : NEXT K
- 1830 FOR K=1 TO 26
- 1840 Y=INT(K/7)*40+50: X=(K MOD 7)*40+20
- 1850 GOSUB 2060
- 1860 IF K>20 THEN LINE (0,199)-(319,199),2
- 1870 R=INT(K/7)*5+6 : C=(K MOD 7)*5+4 : LOCATE R,C
- 1880 PRINT CHR$(ASC("A")+K-1);" ";CHR$(ASC("a")+K-1);
- 1890 PLAY "MFO3"+N$(K)
- 1900 NEXT K
- 1910 LINE (0,199)-(319,199),2
- 1920 LINE (1,1)-(318,34),0,BF
- 1930 FOR N=2 TO 3
- 1940 LOCATE N,5
- 1950 FOR K=1 TO 7
- 1960 NK=(N-2)*7+K
- 1970 PRINT T$(NK);" "; : PLAY "MFO3"+N$(NK+26)
- 1980 NEXT K
- 1990 NEXT N
- 2000 LINE (1,1)-(318,34),0,BF
- 2010 LOCATE 3,5
- 2020 FOR I= 1 TO 3000 : NEXT I
- 2030 GOTO 980
- 2040 REM ---------- SUBROUTINE PLOT PICTURE AT (X,Y) FOR LETTER NUMBER K ----------
- 2050 '
- 2060 IF K<13 THEN ON K GOTO 2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190
- 2070 ON K-12 GOTO 2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330
- 2080 PUT (X,Y),A,PSET : RETURN
- 2090 PUT (X,Y),B,PSET : RETURN
- 2100 PUT (X,Y),C,PSET : RETURN
- 2110 PUT (X,Y),D,PSET : RETURN
- 2120 PUT (X,Y),E,PSET : RETURN
- 2130 PUT (X,Y),F,PSET : RETURN
- 2140 PUT (X,Y),G,PSET : RETURN
- 2150 PUT (X,Y),H,PSET : RETURN
- 2160 PUT (X,Y),I,PSET : RETURN
- 2170 PUT (X,Y),J,PSET : RETURN
- 2180 PUT (X,Y),K,PSET : RETURN
- 2190 PUT (X,Y),L,PSET : RETURN
- 2200 PUT (X,Y),M,PSET : RETURN
- 2210 PUT (X,Y),N,PSET : RETURN
- 2220 PUT (X,Y),O,PSET : RETURN
- 2230 PUT (X,Y),P,PSET : RETURN
- 2240 PUT (X,Y),Q,PSET : RETURN
- 2250 PUT (X,Y),R,PSET : RETURN
- 2260 PUT (X,Y),S,PSET : RETURN
- 2270 PUT (X,Y),T,PSET : RETURN
- 2280 PUT (X,Y),U,PSET : RETURN
- 2290 PUT (X,Y),V,PSET : RETURN
- 2300 PUT (X,Y),W,PSET : RETURN
- 2310 PUT (X,Y),X,PSET : RETURN
- 2320 PUT (X,Y),Y,PSET : RETURN
- 2330 PUT (X,Y),Z,PSET : RETURN
-